A maintenance window is a window of time in which a system or systems can be removed from their respective configured operations and maintenance operations can be performed on such system or systems. Normal configured operations may include, but are not limited to operating as an application server or one of several application servers serving a business application, a database server or one of several database servers serving a database, a web server or one of several web servers serving a website functionality, a virtual machine (VM) or one of several VMs processing a workload, a physical computer or one of several physical computers serving one or more customer functions, or some combination of these and other operations. A maintenance operation may include, but is not limited to applying a software patch, installing new or updated software, adding or changing a hardware component, adding or changing a system configuration, adding or changing a system management component, and the like.
Within the scope of the illustrative embodiments, a “machine” is a computer system or a hardware or software portion thereof, arranged as a physical computing device or a VM. Presently, when a machine needs maintenance, a maintenance window is configured for that machine. This method is acceptable for maintaining a single machine which does not have any interdependency with other virtual or physical machines.
The illustrative embodiments recognize that machines often collaborate with other machines or otherwise have some interdependencies with one or more other machines. This is especially true of machine configurations in datacenters and cloud infrastructure.
Presently, a database server machine may be configured such that the database client machines are predetermined and the relationship between the database server machine and the database client machines is predetermined. However, the illustrative embodiments recognize that many multi-machine configurations are not always configured or known a priori. For example, when cloud resources are allocated to a cloud customer, the customer can often configure those resources flexibly into numerous virtual machines, physical machines, or some combination thereof, operating in any type or number of dependent relationships that suit the customer's needs at the time. Furthermore, such relationships can be dynamic where the relationships, the participating machines, or both can change over time or with changing customer needs.
Thus, the illustrative embodiments recognize that it is not always possible to have a predetermined set of machines in a set of predetermined relationships in a multi-machine environment. Increasingly, complex configurations that require multiple machines to work together to perform a business service are being deployed in highly dynamic environments. The interrelated machines have to be maintained without disrupting the business service or the operation of other related machines. Thus, the illustrative embodiments recognize that performing maintenance operation on a machine that participates in a dynamic multi-system configuration requires coordination with other machines to successfully quiesce the environment, apply maintenance, and return the environment to a running state.